using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;
using PraxisRent.Entities;

namespace PraxisRent.Repository.Mapping
{
    public class EQUIPOMap : EntityTypeConfiguration<EQUIPO>
    {
        public EQUIPOMap()
        {
            // Primary Key
            this.HasKey(t => t.Codigo);

            // Properties
            //this.Property(t => t.Tipo)
            //    .HasMaxLength(20);

            this.Property(t => t.Serie)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.Nombre)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.Modelo)
                .HasMaxLength(50);


            this.Property(t => t.ModeloMotor)
                .HasMaxLength(50);

            this.Property(t => t.SerieMotor)
                .HasMaxLength(50);

            this.Property(t => t.AnioFabricacion)
                .HasMaxLength(4);

            this.Property(t => t.Disponible)
                .IsOptional();

            // Table & Column Mappings
            this.ToTable("EQUIPO");
            this.Property(t => t.Codigo).HasColumnName("Codigo");
            this.Property(t => t.Serie).HasColumnName("Serie");
            this.Property(t => t.Nombre).HasColumnName("Nombre");
            this.Property(t => t.Modelo).HasColumnName("Modelo");
            this.Property(t => t.ModeloMotor).HasColumnName("ModeloMotor");
            this.Property(t => t.SerieMotor).HasColumnName("SerieMotor");
            this.Property(t => t.FechaCompra).HasColumnName("FechaCompra");
            this.Property(t => t.AnioFabricacion).HasColumnName("AnioFabricacion");
            this.Property(t => t.PrecioPorHora).HasColumnName("PrecioPorHora");
            this.Property(t => t.Disponible).HasColumnName("Disponible");
            this.Property(t => t.IdColor).HasColumnName("IdColor");
            this.Property(t => t.IdMarca).HasColumnName("IdMarca");
            this.Property(t => t.IdTipoEquipo).HasColumnName("IdTipoEquipo");

            //Relaciones
            this.HasRequired(t => t.MARCA)
                .WithMany(t => t.EQUIPOs)
                .HasForeignKey(d => d.IdMarca);
            this.HasRequired(t => t.COLOR)
                .WithMany(t => t.EQUIPOs)
                .HasForeignKey(d => d.IdColor);
            this.HasRequired(t => t.TIPO_EQUIPO)
                .WithMany(t => t.EQUIPOs)
                .HasForeignKey(d => d.IdTipoEquipo);
        }
    }
}
